import re

"""
姓名、密码、年龄、家庭地址、薪水、工龄、校区、  授课班级、权限
king---123456---18---北京---20000---10---北京校区---python 开发---admin+'\n'
king2---18---北京---20000---10---北京校区---python 开发---pt
str(18)
split('---')

姓名、年龄、家庭地址、薪水、工龄、校区、授课班级、权限
username(唯一) password
replace  ****

def 注册():pass

def 登录():pass

def 查询():pass

def 删除()：pass

def 修改():pass

def 输出():pass   欢迎信息 加个权限判断

def 新增():pass

def  文件操作():pass  文件操作
"""


class FileReadWrite(object):
    """
    功能：文件读写、文件内容替换相关操作
    """

    def __init__(self, fileName):
        """
        :param fileName: 需要操作的文件名
        """
        self.fileName = fileName

    def write_file(self, AnyStr, flag=True):
        """
        功能：写文件
        :param flag: 给新增用户使用
        :param AnyStr: 需要写入文件的内容
        :return: 无返回
        """
        if flag:
            with open(self.fileName, mode='w', encoding='utf-8') as fp:
                fp.write(AnyStr)
        else:
            with open(self.fileName, mode='a+', encoding='utf-8') as fp:
                fp.write(AnyStr)

    def read_file(self):
        """
        功能：读取文件内容
        :return: 返回读取的内容
        """
        with open(self.fileName, mode='r', encoding='utf-8') as fp:
            return fp.read()

    def ret_fp(self):
        """
        功能：返回文件对象
        :return: 返回文件对象
        """
        return open(self.fileName, mode='r', encoding='utf-8')

    def replaceStr(self, user, oldStr, newStr):
        """
        功能：替换文件里面指定内容
        :param user: 替换的行标识
        :param oldStr: 需要替换的字符串
        :param newStr: 替换后的字符串
        :return: 无返回
        """
        str_s = self.read_file()  # 读取所有用户信息
        fp = self.ret_fp()  # 拿到文件对象
        for f in fp:  # 按行读取
            info_list = f.strip().split('--')  # strip去掉前后空格、换行、tab键  split 以"--"分割 返回一个列表 ['']
            if len(info_list) == 1:  # 判断拿到的数据是否为[''],是则去掉
                continue   # 跳过本次执行
            if info_list[0] == user:   # 判断用户名
                old_f = f.strip()  # strip去掉前后空格、换行、tab键  一行
                new_f = f.strip().replace(oldStr, newStr)  # 将需要替换的信息更新  一行
                new_str = str_s.replace(old_f, new_f)  # 更更老用户数据
                self.write_file(new_str)  # 将更新的所有用户信息写入文件
        fp.close()


class TeacherInfoSystem(FileReadWrite):
    def __init__(self, fileName):
        super().__init__(fileName)

    def reg(self):
        """
        功能：注册功能
        :return: 无返回值
        """
        username = input("请输入用户名：")
        pwd = input("请输入密码：")
        age = input("请输入年龄：")
        city = input("请输入所在城市：")
        salary = input("请输入工资：")
        campus = input("请输入校区(北京校区、上海校区、深圳校区、广州校区):")
        course = input("请输入课程(python开发、Java开发、C++开发、python自动化测试、人工智能):")
        self.write_file(
            username + '--' + pwd + '--' + age + '--' + city + '--' + salary + '--' + campus + '--' + course + "--ord"
            + '\n')

    def login(self):
        times = 0
        while times < 3:
            times += 1
            username = input("请输入用户名：")
            pwd = input("请输入密码：")
            fp = self.ret_fp()
            for f in fp:
                info_list = f.strip().split('--')
                if len(info_list) == 1:
                    continue
                if username == info_list[0] and pwd == info_list[1]:
                    print('登录成功')
                    self.Print(info_list[-1])
                    self.query(info_list[-1], username)
                    times = 4
                    break
            else:
                print("登录失败，剩余登录次数：", 3 - times)

    def query(self, per, user):  # 查询用户信息
        print("用户列表如下：")
        fp = self.ret_fp()
        for f in fp:
            info_list = f.strip().split('--')
            if len(info_list) == 1:
                continue
            if per == 'admin' or user == info_list[0]:
                print('姓名:%s、年龄:%s、城市:%s、薪水:%s、工龄:%s、校区:%s、授课班级:%s、权限:%s' % (info_list[0],
                                                                             info_list[2], info_list[3], info_list[4],
                                                                             info_list[5], info_list[6], info_list[7],
                                                                             info_list[8]
                                                                             ))
            else:
                print('姓名:%s、年龄:%s、城市:%s、薪水:***、工龄:%s、校区:%s、授课班级:%s' % (info_list[0], info_list[2], info_list[3],
                                                                 info_list[5], info_list[6], info_list[7],
                                                                 ))

    def delete(self):
        pass

    def update(self):
        pass

    def Print(self, per):
        """
        功能：告诉用户能够操作什么功能
        :param per: 用户权限缩写
        :return: 无返回值
        """
        if per == 'admin':
            print('欢迎登录用户管理系统，可以操作功能如下：')
            print("""1.查询用户信息\n2.新增用户\n3.删除用户\n4.修改用户信息\n5.修改权限
                  """
                  )
        else:
            print('欢迎登录用户管理系统，可以操作功能如下：')
            print("查询用户信息")

    def newUser(self, userInfo):
        """
        功能：
        :param userInfo:
        :return:
        """
        self.write_file(userInfo+'\n', flag=False)


info = TeacherInfoSystem("用户信息")
info.login()

while 1:
    pass
